package com.zhongc.advance.common.enums;

/**
 *                       
 * @Filename CustomerResultEnum.java
 *
 * @Description 
 *
 * @Version 1.0
 *
 * @Author zhongc
 *
 * @Email zhong_ch@foxmail.com
 *       
 * @History 
 *<li>Author: zhongc</li>
 *<li>Date: 2015年7月14日</li>
 *<li>Version: 1.0</li>
 *<li>Content: create</li>
 *
 */
public enum UserResultEnum implements Messageable{
	
	/** 未知异常 */
	UN_KNOWN_EXCEPTION("UN_KNOWN_EXCEPTION", "未知异常"),
	/** 执行失败 */
	EXECUTE_FAIL("EXECUTE_FAIL", "执行失败"),
	/** 执行成功 */
	EXECUTE_SUCCESS("EXECUTE_SUCCESS", "执行成功"),
	/** 账户已存在 */
	USERNAME_EXIST("USERNAME_EXIST", "账户已存在"),
	/** 账户不存在 */
	USERNAME_NOT_EXIST("USERNAME_NOT_EXIST", "账户不存在"),
	/**账户名错误*/
	USERNAME_OR_PASSWORD_ERROR("USERNAME_OR_PASSWORD_ERROR", "账户名或密码错误"),
	/** 没有查询到信息 */
	NO_INFO("NO_INFO", "没有查询到信息"),
	/**账户名错误*/
	USERNAME_ERROR("USERNAME_ERROR", "账户名错误"),
	/**密码错误*/
	PASSWORD_ERROR("PASSWORD_ERROR", "密码错误"),
	/** 请求参数不完整 */
	INCOMPLETE_REQ_PARAM("INCOMPLETE_REQ_PARAM", "请求参数不完整"),
	/** 数据库异常 */
	DATABASE_EXCEPTION("DATABASE_EXCEPTION", "数据库异常"),
	/** 相同商户已存在 */
	MERCANT_EXIST("MERCANT_EXIST", "相同商户已存在"),
	/** 商户不存在 */
	MERCANT_NOT_EXIST("MERCANT_NOT_EXIST", "商户不存在"),
    /** 没有此安全问题 */
    NO_USER_SECURE_QUESTION("NO_USER_SECURE_QUESTION", "没有此安全问题"),
    /** 安全问题答案错误 */
    USER_SECURE_QUESTION_ANSWER_ERROR("USER_SECURE_QUESTION_ANSWER_ERROR", "安全问题答案错误"),
	/** 相同的安全问题已存在 */
	USER_SECURE_QUESTION_EXIST("USER_SECURE_QUESTION_EXIST", "相同的安全问题已存在"),
	/** 身份信息不一致 */
	IDENTITY_INFORMATION_INCONSISTENCY("IDENTITY_INFORMATION_INCONSISTENCY", "身份信息不一致"),
	/** 验证码错误*/
	VERIFYCODE_ERROR("VERIFYCODE_ERROR", "验证码错误"),
	/** 用户被冻结*/
	USER_FREEZE("USER_FREEZE", "账户被冻结"),
	/** 不允许登录的注册类型*/
	NOT_LONGIN_TYPE("NOT_LONGIN_TYPE", "不允许登录的注册类型"),
	/** 用户未激活*/
	USER_UNACTIVATED("USER_UNACTIVATED", "用户未激活"),
	/** 用户运行时状态验证失败*/
	RUNTIMESTATUS_ERROR("RUNTIMESTATUS_ERROR", "用户运行时状态验证失败"),
	/** 密码输入失败次数过多*/
	PASSWORDERRORTIMES_ERROR("PASSWORDERRORTIMES_ERROR", "密码输入失败次数过多"),
	/** 违反索引唯一性约束 */
	DATE_IS_EXIST("DATE_IS_EXIST", "数据已经存在"),
	/** 批量部分失败 */
	BATCH_PART_FAIL("BATCH_PART_FAIL", "批量部分失败"),
	/** 清空缓存异常 */
	CLEAN_CACHE_FAIL("CLEAN_CACHE_FAIL", "清空缓存异常"),
	/** 用户已经通过实名认证*/
	USER_HAVE_AUTHENTICATION("USER_HAVE_AUTHENTICATION","用户已经通过实名认证"),
	/** 用户未进行关联认证*/
	USER_NOT_RELEVANCE_CERTIFY("USER_NOT_RELEVANCE_CERTIFY","证件号已被占用，请进行关联认证"),
	/** 用户实名认证失败*/
	USER_REALNAME_CERTIFY_FAIL("USER_REALNAME_CERTIFY_FAIL","用户实名认证失败"),
	/** 过期的认证 */
	OVERDUE_CERTIFY("OVERDUE_CERTIFY", "过期的认证"),
	/** 驳回的认证 */
	REJECT_CERTIFY("REJECT_CERTIFY", "驳回的认证"),
	/** 未认证的认证 */
	UNAUTHERIZED_CERTIFY("UNAUTHERIZED_CERTIFY", "未认证的认证"),
	// ------- 商户 -------
	/** 订购关系冲突 */
	MERCHAT_RELATION_CONFLICT("ORDER_RELATION_CONFLICT", "订购关系冲突"),
	/** 非法的订单有效期 */
	ORDER_INVALID_DATE("ORDER_INVALID_DATE", "非法的订单有效期"),
	/** 关联订单未生效 */
	ORG_ORDER_INVALID("ORG_ORDER_INVALID", "非法的关联订单"),
	/** 产品中心，产品未生效 */
	PRODUCT_INVALID("PRODUCT_INVALID", "非法的产品"),
	/** 修改订单失败 */
	MODIFY_ORDER_FAIL("MODIFY_ORDER_FAIL", "修改订单失败")
	;
	
	/** 枚举值 */
	private final String code;
	
	/** 枚举描述 */
	private final String message;
	
	/**
	 *
	 * @param code 枚举值
	 * @param message 枚举描述
	 */
	private UserResultEnum(String code, String message) {
		this.code = code;
		this.message = message;
	}
	
	/**
	 * @return Returns the code.
	 */
	public String getCode() {
		return code;
	}
	
	/**
	 * @return Returns the message.
	 */
	public String getMessage() {
		return message;
	}
	
	/**
	 * @return Returns the code.
	 */
	public String code() {
		return code;
	}
	
	/**
	 * @return Returns the message.
	 */
	public String message() {
		return message;
	}
	
	/**
	 * 通过枚举<code>code</code>获得枚举
	 *
	 * @param code
	 * @return CustomerResultEnum
	 */
	public static UserResultEnum getByCode(String code) {
		for (UserResultEnum _enum : values()) {
			if (_enum.getCode().equals(code)) {
				return _enum;
			}
		}
		return null;
	}
	
	/**
	 * 获取全部枚举
	 * 
	 * @return List<CustomerResultEnum>
	 */
	public static java.util.List<UserResultEnum> getAllEnum() {
		java.util.List<UserResultEnum> list = new java.util.ArrayList<UserResultEnum>(
			values().length);
		for (UserResultEnum _enum : values()) {
			list.add(_enum);
		}
		return list;
	}
	
	/**
	 * 获取全部枚举值
	 * 
	 * @return List<String>
	 */
	public static java.util.List<String> getAllEnumCode() {
		java.util.List<String> list = new java.util.ArrayList<String>(values().length);
		for (UserResultEnum _enum : values()) {
			list.add(_enum.code());
		}
		return list;
	}
	
	/**
	 * 通过code获取msg
	 * @param code 枚举值
	 * @return
	 */
	public static String getMsgByCode(String code) {
		if (code == null) {
			return null;
		}
		UserResultEnum _enum = getByCode(code);
		if (_enum == null) {
			return null;
		}
		return _enum.getMessage();
	}
	
	/**
	 * 获取枚举code
	 * @param _enum
	 * @return
	 */
	public static String getCode(UserResultEnum _enum) {
		if (_enum == null) {
			return null;
		}
		return _enum.getCode();
	}
}
